home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / DVDFR.ifs < prev    next >
Encoding:
Text File  |  2004-10-28  |  13.7 KB  |  405 lines

  1. // GETINFO SCRIPTING
  2. // DVDFR.com - POUR UTILISATION PERSONNELLE UNIQUEMENT ! Cliquez sur "Editor" pour plus d'infos
  3.  
  4. (***** LICENCE *************************************
  5.  *  Ce script permet de rΘcupΘrer les donnΘes du   *
  6.  *  site de DVDFR pour une utilisation             *
  7.  *  personnelle uniquement. Ces donnΘes ne         *
  8.  *  peuvent pas Ωtre rΘcupΘrΘes ni exploitΘes      *
  9.  *  dans un but commercial.                        *
  10.  *  En utilisant ce script vous dΘclarez accepter  *
  11.  *  ces conditions et endosser toute               *
  12.  *  responsabilitΘ dans la maniΦre dont vous       *
  13.  *  utilisez ces donnΘes                           *
  14.  *                                                 *
  15.  ***************************************************)
  16.  
  17. (***************************************************
  18.  *  Movie importation script for:                  *
  19.  *                DVDFR.com, http://www.dvdfr.com  *
  20.  *                                                 *
  21.  *  (c) 2002-2004 Antoine Potten  software@antp.be *
  22.  *  Improved by Fabrice FERT :                     *
  23.  *   - more fields filled                          *
  24.  *                                                 *
  25.  *  For use with Ant Movie Catalog 3.4.1           *
  26.  *    (there is a bug in the 3.4.0 that prevents   *
  27.  *     from using this script without serious      *
  28.  *     problems. Please upgrade if you have an     *
  29.  *     old version)                                *
  30.  *  www.antp.be/software/moviecatalog              *
  31.  *                                                 *
  32.  *  This program is free software; you can         *
  33.  *  redistribute it and/or modify it under the     *
  34.  *  terms of the GNU General Public License as     *
  35.  *  published by the Free Software Foundation;     *
  36.  *  either version 2 of the License, or (at your   *
  37.  *  option) any later version.                     *
  38.  ***************************************************)
  39.  
  40. program DVDFR;
  41. const
  42.   MustImportBitrate = False; // set this to True if you want to take the bitrate information from the site
  43.   MustImportDescr = True;
  44.   BaseURL = 'http://www.dvdfr.com';
  45. //  BaseURL = 'http://dvdfr.solexine.fr';
  46. var
  47.   MovieName: string;
  48.  
  49. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  50. var
  51.   i: Integer;
  52. begin
  53.   result := -1;
  54.   if StartAt < 0 then
  55.     StartAt := 0;
  56.   for i := StartAt to List.Count-1 do
  57.     if Pos(Pattern, List.GetString(i)) <> 0 then
  58.     begin
  59.       result := i;
  60.       Break;
  61.     end;
  62. end;
  63.  
  64. procedure AnalyzePage(Address: string);
  65. var
  66.   Page: TStringList;
  67.   LineNr: Integer;
  68.   Line, Tags, Caption: string;
  69.   BeginPos, EndPos: Integer;
  70. begin
  71.   Line := GetPage(Address);
  72.   if Pos('<title>Dvdfr.com - Recherche DVDFr', Line) > 0 then
  73.   begin
  74.     PickTreeClear;
  75.     if Pos('Vos critΦres de recherche n''ont produit aucun rΘsultat.', Line) = 0 then
  76.     begin
  77.       Page := TStringList.Create;
  78.       EndPos := Pos('TITLE="Page prΘcΘdente"', Line) + 5;
  79.       if EndPos > 5 then
  80.       begin
  81.         BeginPos := EndPos - 70;
  82.         Tags := Copy(Line, BeginPos, EndPos - BeginPos);
  83.         BeginPos := Pos('="..', Tags) + 4;
  84.         EndPos := Pos('" TITLE', Tags);
  85.         PickTreeAdd('Page prΘcΘdente', BaseURL + Copy(Tags, BeginPos, EndPos - BeginPos));
  86.       end;
  87.       EndPos := Pos('TITLE="Page suivante"', Line) + 5;
  88.       if EndPos > 5 then
  89.       begin
  90.         BeginPos := EndPos - 70;
  91.         Tags := Copy(Line, BeginPos, EndPos - BeginPos);
  92.         BeginPos := Pos('="..', Tags) + 4;
  93.         EndPos := Pos('" TITLE', Tags);
  94.         PickTreeAdd('Page suivante', BaseURL + Copy(Tags, BeginPos, EndPos - BeginPos));
  95.       end;
  96.       BeginPos := Pos('<table class="tableSearchResult"', Line);
  97.       Delete(Line, 1, BeginPos + Length(Tags) - 1);
  98.       BeginPos := Pos('</TR>', Line);
  99.       Delete(Line, 1, BeginPos + 5);
  100.       EndPos := Pos('</table>', Line);
  101.       Delete(Line, EndPos, Length(Line));
  102.       while Pos('<TR', Line) > 0 do
  103.       begin
  104.         BeginPos := Pos('<TR', Line);
  105.         EndPos := Pos('</TR>', Line);
  106.         Tags := Copy(Line, BeginPos, EndPos - BeginPos);
  107.         if Pos('CLASS="tableHeaderLine"', Tags) > 0 then
  108.         begin // "Letter"
  109.           EndPos := Pos('</span>', Tags);
  110.           PickTreeAdd('Films commenτant par "' + Copy(Tags, EndPos - 1, 1) + '" :', '');
  111.         end else
  112.         begin // Movie
  113.           Page.Text := Tags;
  114.           Tags := Page.GetString(2);
  115.           Delete(Tags, 1, 1);
  116.           BeginPos := Pos('="..', Tags) + 4;
  117.           EndPos := Pos('">', Tags);
  118.           Address := Copy(Tags, BeginPos, EndPos - BeginPos);
  119.           HTMLRemoveTags(Tags);
  120.           Caption := Trim(Tags);
  121.           Tags := Page.GetString(3);
  122.           Delete(Tags, 1, 1);
  123.           HTMLRemoveTags(Tags);
  124.           Tags := Trim(Tags);
  125.           if Tags <> ' ' then
  126.             Caption := Caption + ' (' + Tags + ')';
  127.           Tags := Page.GetString(4);
  128.           Delete(Tags, 1, 1);
  129.           HTMLRemoveTags(Tags);
  130.           Tags := Trim(Tags);
  131.           if Tags <> ' ' then
  132.             Caption := Caption + ', ' + Tags;
  133.           PickTreeAdd(Caption, BaseURL + Address);
  134.         end;
  135.         Delete(Line, 1, Pos('</TR>', Line) + 5);
  136.       end;
  137.       Page.Free;
  138.     end;
  139.     if PickTreeExec(Address) then
  140.     begin
  141.       AnalyzePage(Address);
  142.     end;
  143.   end else
  144.   if Pos('<title>Dvdfr.com - Fiche DVD', Line) > 0 then
  145.   begin
  146.     SetField(fieldURL, Address);
  147.     AnalyzeMoviePage(Line);
  148.   end;
  149. end;
  150.  
  151. procedure AnalyzeMoviePage(PageContents: string);
  152. var
  153.   Line, Value: string;
  154.   LineNr, BeginPos, EndPos, BeginPos2, EndPos2, i: Integer;
  155.   Page: TStringList;
  156. begin
  157.   // Picture
  158.   BeginPos := Pos('src="../images/dvd/cover', PageContents);
  159.   EndPos := Pos('<div class="dvd_categorie">', PageContents);
  160.   Line := Copy(PageContents, BeginPos, EndPos - BeginPos);
  161.   EndPos := Pos('" ', Line);
  162.   Value := Copy(Line, 8, EndPos - 8);
  163.   GetPicture(BaseURL + Value, False);
  164.   // Category
  165.   BeginPos := Pos('<A class="home_a" TITLE="Rechercher les autres films de mΩme catΘgorie"', PageContents);
  166.   EndPos := Pos('<br><img src="../images/filet_categoriedvd.gif"', PageContents);
  167.   Value := Copy(PageContents, BeginPos, EndPos - BeginPos);
  168.   HTMLRemoveTags(Value);
  169.   SetField(fieldCategory, Trim(AnsiMixedCase(AnsiLowerCase(Value), ' ')));
  170.   //
  171.   Page := TStringList.Create;
  172.   BeginPos := Pos('class="dvd_title"', PageContents)-20;
  173.   EndPos := Pos('</html>', PageContents);
  174.   Page.Text := Copy(PageContents, BeginPos, EndPos);
  175.   // Titles
  176.   LineNr := FindLine('<div class="dvd_title">', Page, 0);
  177.   if LineNr > -1 then
  178.   begin
  179.     Value := Trim(Page.GetString(LineNr + 1));
  180.     HTMLRemoveTags(Value);
  181.     SetField(fieldOriginalTitle, Value);
  182.     Value := Trim(Page.GetString(LineNr));
  183.     HTMLRemoveTags(Value);
  184.     Value := AnsiUpFirstLetter(AnsiLowerCase(Value));
  185.     if GetField(fieldOriginalTitle) = '' then
  186.       SetField(fieldOriginalTitle, Value)
  187.     else
  188.       SetField(fieldTranslatedTitle, Value);
  189.     // Country
  190.     Line := Page.GetString(LineNr + 2);
  191.     BeginPos := Pos('">', Line) + 2;
  192.     EndPos := Pos(' , ', Line);
  193.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  194.     SetField(fieldCountry, Value);
  195.     BeginPos := EndPos + 3;
  196.     // Year
  197.     EndPos := Pos('<br>', Line);
  198.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  199.     SetField(fieldYear, Value);
  200.     // Producer
  201.     Delete(Line, 1, EndPos - 1);
  202.     HTMLRemoveTags(Line);
  203.     SetField(fieldProducer, Line);
  204.   end;
  205.   // Note
  206.   LineNr := FindLine('/images/vote_dvdfr.gif', Page, LineNr);
  207.   if LineNr > -1 then
  208.   begin
  209.     Value := Trim(Page.GetString(LineNr));
  210.     HTMLRemoveTags(Value);
  211.     Value := StringReplace(Value, ' ', '');
  212.     EndPos := Pos(',', Value);
  213.     Line := value;
  214.     if EndPos > 0 then
  215.       Line := Copy(Value, 1, EndPos - 1);
  216.     SetField(fieldRating, Line);
  217.   end;
  218.   // Description
  219.   if MustImportDescr then
  220.   begin
  221.     LineNr := FindLine('<div class="dvd_subtitle">Synopsis</div>', Page, LineNr);
  222.     if LineNr > -1 then
  223.     begin
  224.       LineNr := LineNr + 1;
  225.       Line := Trim(Page.GetString(LineNr));
  226.       Value := '';
  227.       while (Pos('</div>', Line) = 0) and (Line <> '') do
  228.       begin
  229.         Value := Value + Line + ' ';
  230.         LineNr := LineNr + 1;
  231.         Line := Trim(Page.GetString(LineNr));
  232.       end;
  233.       Value := Value + Line + ' ';
  234.       HTMLRemoveTags(Value);
  235.       SetField(fieldDescription, Value);
  236.     end;
  237.   end;
  238.   // Director
  239.   LineNr := FindLine('<div class="dvd_subtitle">RΘalisation</div>', Page, LineNr);
  240.   if LineNr > -1 then
  241.   begin
  242.     Value := Trim(Page.GetString(LineNr + 1));
  243.     HTMLRemoveTags(Value);
  244.     SetField(fieldDirector, Value);
  245.   end;
  246.   // Actors
  247.   LineNr := FindLine('<div class="dvd_subtitle">Avec...</div>', Page, LineNr);
  248.   if LineNr > -1 then
  249.   begin
  250.     Value := StringReplace(Trim(Page.GetString(LineNr + 1)), '<br>', ',');
  251.     HTMLRemoveTags(Value);
  252.     SetField(fieldActors, Value);
  253.   end;
  254.   // Media Label - Reference
  255.   LineNr := FindLine('<div class="dvd_subtitle">RΘfΘrence</div>', Page, LineNr);
  256.   if LineNr > -1 then
  257.   begin
  258.     Value := Trim(Page.GetString(LineNr + 1));
  259.     HTMLRemoveTags(Value);
  260.     SetField(fieldMedia, Value);
  261.   end;
  262.   // Length
  263.   LineNr := FindLine('<img alt="DurΘe"', Page, LineNr);
  264.   if LineNr > -1 then
  265.   begin
  266.     Line := Page.GetString(LineNr + 1);
  267.     BeginPos := Pos('>', Line) + 1;
  268.     EndPos := Pos(' min', Line);
  269.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  270.     SetField(fieldLength, Value);
  271.   end;
  272.   // Discs
  273.   LineNr := FindLine('<img alt="Nombre de disques"', Page, LineNr);
  274.   if LineNr > -1 then
  275.   begin
  276.     Line := Page.GetString(LineNr + 1);
  277.     BeginPos := Pos('>', Line) + 1;
  278.     EndPos := Pos('</', Line);
  279.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  280.     SetField(fieldDisks, Value);
  281.   end;
  282.   // Bitrate
  283.   if MustImportBitrate then
  284.   begin
  285.     LineNr := FindLine('<img alt="Bitrate moyen"', Page, LineNr);
  286.     if LineNr > -1 then
  287.     begin
  288.       Line := Page.GetString(LineNr + 1);
  289.       BeginPos := Pos('<td>', Line) + 4;
  290.       EndPos := Pos(' ', Line);
  291.       Value := Copy(Line, BeginPos, EndPos - BeginPos);
  292.       Value := StringReplace(Value, ',', '') + '0';
  293.       SetField(fieldVideoBitrate, Value);
  294.     end;
  295.   end;
  296.   // Media type
  297.   LineNr := FindLine('<img alt="Format DVD"', Page, LineNr);
  298.   if LineNr > -1 then
  299.   begin
  300.     Line := Page.GetString(LineNr + 1);
  301.     BeginPos := Pos('>', Line) + 1;
  302.     EndPos := Pos('</', Line);
  303.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  304.     SetField(fieldMediaType, Value);
  305.   end;
  306.   // Comments
  307.   Line := Page.Text;
  308.   BeginPos := Pos('</span><br>', Line) + 12;
  309.   Delete(Line, 1, BeginPos);
  310.   EndPos := Pos('<br>', Line);
  311.   Value := Copy(Line, 1, EndPos - 1);
  312.   HTMLRemoveTags(Value);
  313.   Value := 'SupplΘments:' + #13#10 + Trim(Value);
  314.   SetField(fieldComments, Value);
  315.   // Video format
  316.   LineNr := FindLine('title="Format vidΘo"', Page, LineNr);
  317.   if LineNr > -1 then
  318.   begin
  319.     Line := Page.GetString(LineNr + 2);
  320.     BeginPos := Pos('alt="', Line) + 17;
  321.     EndPos := Pos('" title=', Line);
  322.     Value := Copy(Line, BeginPos, EndPos - BeginPos);
  323.     SetField(fieldResolution, Value);
  324.   end;
  325.   // Zone
  326.   LineNr := FindLine('title="Zone(s) du DVD"', Page, LineNr);
  327.   if LineNr > -1 then
  328.   begin
  329.     Line := Page.GetString(LineNr + 2);
  330.     BeginPos := Pos('alt="', Line) + 5;
  331.     EndPos := Pos('" title=', Line);
  332.     Value := 'DVD ' + Copy(Line, BeginPos, EndPos - BeginPos);
  333.     SetField(fieldVideoFormat, Value);
  334.   end;
  335.   // Standard
  336.   LineNr := FindLine('title="Standard vidΘo du DVD"', Page, LineNr);
  337.   if LineNr > -1 then
  338.   begin
  339.     Line := StringReplace(Trim(Page.GetString(LineNr + 2)), #9, '');
  340.     HTMLRemoveTags(Line);
  341.     Value := Value + ' - Standard ' + Line;
  342.     SetField(fieldVideoFormat, Value);
  343.   end;
  344.   // Audio format
  345.   LineNr := FindLine('title="SpΘcifications audio"', Page, LineNr);
  346.   if LineNr > -1 then
  347.   begin
  348.     BeginPos := LineNr + 2;
  349.     LineNr := FindLine('</table></td></tr>', Page, LineNr);
  350.     if LineNr > -1 then
  351.     begin
  352.       EndPos := LineNr;
  353.       Value := '';
  354.       Line := 'DVD ';
  355.       for i := BeginPos to EndPos do
  356.       begin
  357.         BeginPos2 := Pos('<small>', Page.GetString(i));
  358.         EndPos2 := Pos('</small>', Page.GetString(i));
  359.         if ((BeginPos2 > 0) and (EndPos2 > 0)) then
  360.         begin
  361.             if not(Value = '') then
  362.                 Value := Value + ' - ';
  363.             Value := Value + Copy(Page.GetString(i), BeginPos2 + 7, EndPos2 - (BeginPos2 + 7));
  364.         end;
  365.         BeginPos2 := Pos('alt="', Page.GetString(i));
  366.         EndPos2 := Pos('" title="', Page.GetString(i));
  367.         if ((BeginPos2 > 0) and (EndPos2 > 0)) then
  368.         begin
  369.             if not(Line = 'DVD ') then
  370.                 Line := Line + ' - ';
  371.             Line := Line + Copy(Page.GetString(i), BeginPos2 + 5, EndPos2 - (BeginPos2 + 5));
  372.         end;
  373.       end;
  374.       SetField(fieldAudioFormat, Line);
  375.       SetField(fieldLanguages, Value);
  376.     end;
  377.   end;
  378.   // Sous-titres
  379.   LineNr := FindLine('title="Sous-titres disponibles"', Page, LineNr);
  380.   if LineNr > -1 then
  381.   begin
  382.     Line := StringReplace(Trim(Page.GetString(LineNr + 3)), #9, '');
  383.     HTMLRemoveTags(Line);
  384.     SetField(fieldSubtitles, Line);
  385.   end;
  386.   //
  387.   Page.Free;
  388.   DisplayResults;
  389. end;
  390.  
  391. begin
  392.   if CheckVersion(3,4,1) then
  393.   begin
  394.     MovieName := GetField(fieldOriginalTitle);
  395.     if MovieName = '' then
  396.       MovieName := GetField(fieldTranslatedTitle);
  397.     if Input('DVDFR.com Import', 'Entrez le titre du film :', MovieName) then
  398.     begin
  399.       AnalyzePage(BaseURL + '/search/search.php?multiname='+UrlEncode(MovieName));
  400.     end;
  401.   end else
  402.     ShowMessage('Ce script requiert la version 3.4.1 ou supΘrieure de Ant Movie Catalog.');
  403. end.
  404.  
  405.